package day24.homework;

import java.util.*;

public class hw3 {
    public static void main(String[] args) {
        // 创建一个HashMap集合，用于存储水果名称（String类型）作为键，价格（Double类型）作为值
        Map<String, Double> fruits = new HashMap<>();
        // 向Map集合中添加水果及其价格数据，put方法用于添加键值对
        fruits.put("香蕉", 5.6);
        fruits.put("樱桃", 25.0);
        fruits.put("桃子", 5.6);
        fruits.put("苹果", 2.3);
        
        // 输出初始水果价格信息到控制台
        System.out.println("初始水果价格: " + fruits);
        
        // (1) 遍历该map集合，并且统计有多少种水果（key），用两种方式进行遍历
        // 方法一：通过entrySet()方法遍历，该方法返回Map中所有键值对的Set集合
        System.out.println("\n方法一：通过entrySet遍历");
        // 定义计数器用于统计水果种类数
        int count1 = 0;
        // 使用增强for循环遍历entrySet集合，每个元素都是Map.Entry类型的键值对对象
        for (Map.Entry<String, Double> entry : fruits.entrySet()) {
            // 通过entry.getKey()获取键（水果名称），entry.getValue()获取值（价格）
            System.out.println(entry.getKey() + " = " + entry.getValue());
            // 每遍历一个元素计数器加1
            count1++;
        }
        // 输出统计的水果种类数
        System.out.println("水果种类数: " + count1);
        
        // 方法二：通过keySet()方法遍历，该方法返回Map中所有键的Set集合
        System.out.println("\n方法二：通过keySet遍历");
        // 定义另一个计数器用于统计水果种类数
        int count2 = 0;
        // 使用增强for循环遍历keySet集合，每个元素都是键（水果名称）
        for (String key : fruits.keySet()) {
            // 通过键获取对应的值，使用get()方法根据键获取值
            System.out.println(key + " = " + fruits.get(key));
            // 每遍历一个元素计数器加1
            count2++;
        }
        // 输出统计的水果种类数
        System.out.println("水果种类数: " + count2);
        
        // (2) 将"香蕉"的价格修改为10.9，并删除桃子这组数据
        // 使用put方法添加已存在的键会覆盖原来的值，实现修改功能
        fruits.put("香蕉", 10.9);
        // 使用remove方法根据键删除对应的键值对
        fruits.remove("桃子");
        // 输出修改和删除操作后的水果价格信息
        System.out.println("\n修改后删除后的水果价格: " + fruits);
        
        // (3) 将修改后的map中所有key和value都输出到控制台
        // 再次遍历修改后的Map集合，输出所有水果信息
        System.out.println("\n修改后的水果信息");
        // 使用entrySet方式遍历Map集合
        for (Map.Entry<String, Double> entry : fruits.entrySet()) {
            // 输出每个水果的名称和价格
            System.out.println(entry.getKey() + " = " + entry.getValue());
        }
    }
}